It is common in many contemporary computer systems to require rapid access to stored information. One method of decreasing the time taken to access stored information is to use disks capable of high-speed input and output operations. Alternatively, a multiple disk array, called a Redundant Array of Inexpensive Disks (RAID) can be used. In such arrays, the multiple drives can be concatenated into one logical storage unit. When this is done, the storage space of each drive can be divided into “stripes.” These stripes are then interleaved round robin, so that the combined storage space is composed alternately of stripes from each drive. It is then possible to optimize performance by striping the drives in the array with stripes large enough so that each data record can fall entirely within one stripe or by arranging the stripe size so that a data record spans all of the disks in a single stripe. This allows the drives to work simultaneously on different I/O operations, and thus maximizes the number of simultaneous I/O operations that can be performed by the array.
Alternatively, a caching system can be used. In such a system, large capacity disks are used to store data that is not of continuous interest. When such data is requested, it is moved from the disks to a much faster, more expensive and, consequently, more limited in capacity, medium such as a random access or RAM memory (which may be non-volatile RAMS or NVRAMs for reliability purposes.) This faster medium is called a cache memory and the process is called data caching. The use of a faster medium produces performance gains under the generally valid assumption that, once data has been accessed, it will be accessed again in the near future (known as temporal localization.) In addition, data is typically transferred in blocks in the caching system because it has been found that data access patterns hold spatial localization as well.
The next time data is requested during a read operation, the storage system first checks the cache memory to determine if the requested data is stored there. If the data is in the cache memory, the data is retrieved directly from the cache memory without accessing the slower disks. If the data is not in the cache memory, then the slower disks are accessed to retrieve the data. The retrieved data may be added to the cache memory at that time so that it will be available if requested again.
A similar process is performed during a data write operation. In particular, data to be written is first written into the cache memory and the write is then acknowledged. The data in the cache memory is then later asynchronously written to the underlying disks using some algorithm to decide the order in which the data in the cache memory is written to the disks. This latter process is called “destaging.”
Cache memories can also be used in connection with RAID systems. In such RAID systems performance gains can be obtained by coalescing small sequential RAID writes in order to turn them into full-stripe writes, thereby increasing throughput and response time.
In a large, distributed computer system connected by a network, management personnel and resources typically manage the system from a system console. However, the data caching software, which actually controls the data caching services, is typically comprised of low-level routines that are part of an operating system kernel running on a particular machine. These routines must run on that machine and must be written in platform-dependent language. Thus, prior art systems required a manager to physically log onto each local host in a distributed system in order to discover the caching facilities on that local host and set up the caching process.